package com.baizhi.shiro;

import com.baizhi.dao.CmfzAdminDao;
import com.baizhi.entity.CmfzAdmin;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.shiro.authc.*;
import org.apache.shiro.realm.AuthenticatingRealm;
import org.springframework.beans.factory.annotation.Autowired;

public class DemoRealm2 extends AuthenticatingRealm {
    @Autowired
    private CmfzAdminDao cmfzAdminDao;
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
//        1、获取token中的账号名
        UsernamePasswordToken token = (UsernamePasswordToken)authenticationToken;
        String username = token.getUsername();
//        2、根据用户名  从数据库中查询管理员对象
        CmfzAdmin admin = cmfzAdminDao.selectOne(new QueryWrapper<CmfzAdmin>().eq("username", username));
//        3、根据数据库的查询结果 进行判断  如查询结果为null 则直接返回null  否则返回一个封装后的简单账户信息对象
        if(admin!=null){
            /*
            * 注意：这个返回的简单账户信息对象  是new出来的 但需要提供三个参数
            * 参数1：从数据库中查询出的账号名
            * 参数2：从数据库中查询出的密码
            * 参数3：当前对象的名字
            * */
            return new SimpleAccount(admin.getUsername(),admin.getPassword(),this.getName());
        }
        return null;
    }
}
